//// 二次编译
//#include <iostream>
//using namespace std;
//
//class A {
//public:
//    void func() {
//        cout << "A::func" << endl;
//    }
//};
//
//// 函数模板
//template<typename T>void foo() {
//    //  a;  // error:a未声明                    标识符必须声明          1_1
//
//    A a;
//    //  a.abc(); // error:A类没有成员函数abc()  已知类型的调用必须合理  1_2
//    a.func(); // ok
//
//    T t; // A t;
////  t.abc();  // 第一次编译:ok              未知类型的调用假定都合理  1_3
//              // 第二次编译:error 结合类型实参,再次检查调用是否都合理 2
//    t.func(); //ok
//}
//
//int main(void) {
//    foo<A>();
//    return 0;
//}
